{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "97523e75",
   "metadata": {},
   "outputs": [],
   "source": [
    "def bezier0(t,P0,P1,P2):\n",
    "    \n",
    "    A = (P1-P0) * t + P0\n",
    "    B = (P2-P1) * t + P1\n",
    "    P = (B - A) * t + A\n",
    "    \n",
    "    return P"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4956bc86",
   "metadata": {},
   "outputs": [],
   "source": [
    "def route0(P0,P1,P2):\n",
    "    n = 101\n",
    "    arrP = np.zeros((n,2))\n",
    "    tList = np.linspace(0,1,n)\n",
    "    index = 0\n",
    "    for t in tList:\n",
    "        arrP[index,:] = bezier0(t,P0,P1,P2)\n",
    "        index += 1\n",
    "    return arrP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "7ea01e08",
   "metadata": {},
   "outputs": [],
   "source": [
    "def bezier(t,P0,P1,P2,P3):\n",
    "    \n",
    "    A = (P1-P0) * t + P0\n",
    "    B = (P2-P1) * t + P1\n",
    "    C = (P3-P2) * t + P2\n",
    "    D = (B - A) * t + A\n",
    "    E = (C - B) * t + B\n",
    "    P = (E - D) * t + D\n",
    "    \n",
    "    return P"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6bf3b097",
   "metadata": {},
   "outputs": [],
   "source": [
    "def bezier2(t,P0,P1,P2,P3,P4,P5):\n",
    "    \n",
    "    A = (P1-P0) * t + P0\n",
    "    B = (P2-P1) * t + P1\n",
    "    C = (P3-P2) * t + P2\n",
    "    D = (P4-P3) * t + P3\n",
    "    E = (P5-P6) * t + P6\n",
    "    F = (B - A) * t + A\n",
    "    G = (C - B) * t + B\n",
    "    H = (D - C) * t + C\n",
    "    I = (E - D) * t + D\n",
    "    J = (G - F) * t + F\n",
    "    K = (H - G) * t + G\n",
    "    L = (I - H) * t + H\n",
    "    M = (K - J) * t + J\n",
    "    N = (L - K) * t + K\n",
    "    P = (N - M) * t + M\n",
    "    \n",
    "    return P"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "e187c6b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "def bezier1(t,P0,P1,P2,P3,P4):\n",
    "    \n",
    "    A = (P1-P0) * t + P0\n",
    "    B = (P2-P1) * t + P1\n",
    "    C = (P3-P2) * t + P2\n",
    "    D = (P4-P3) * t + P3\n",
    "    E = (B - A) * t + A\n",
    "    F = (C - B) * t + B\n",
    "    G = (D - C) * t + C\n",
    "    H = (F - E) * t + E\n",
    "    I = (G - F) * t + F\n",
    "    P = (I - H) * t + H\n",
    "    \n",
    "    return P"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b6d28339",
   "metadata": {},
   "outputs": [],
   "source": [
    "def route1(P0,P1,P2,P3,P4):\n",
    "    n = 101\n",
    "    arrP = np.zeros((n,2))\n",
    "    tList = np.linspace(0,1,n)\n",
    "    index = 0\n",
    "    for t in tList:\n",
    "        arrP[index,:] = bezier1(t,P0,P1,P2,P3,P4)\n",
    "        index += 1\n",
    "    return arrP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "cbb3110f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def route2(P0,P1,P2,P3,P4,P5):\n",
    "    n = 101\n",
    "    arrP = np.zeros((n,2))\n",
    "    tList = np.linspace(0,1,n)\n",
    "    index = 0\n",
    "    for t in tList:\n",
    "        arrP[index,:] = bezier2(t,P0,P1,P2,P3,P4,P5)\n",
    "        index += 1\n",
    "    return arrP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "5e6e7c53",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'P6' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17308/652482112.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[0mP4\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m \u001b[0mP5\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m \u001b[0marrP1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mroute2\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mP0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP4\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     10\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrP1\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0marrP1\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'y-'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     11\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17308/2661260998.py\u001b[0m in \u001b[0;36mroute2\u001b[1;34m(P0, P1, P2, P3, P4, P5)\u001b[0m\n\u001b[0;32m      5\u001b[0m     \u001b[0mindex\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      6\u001b[0m     \u001b[1;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mtList\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m         \u001b[0marrP\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbezier2\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mt\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP4\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mP5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      8\u001b[0m         \u001b[0mindex\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      9\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0marrP\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_17308/4142840830.py\u001b[0m in \u001b[0;36mbezier2\u001b[1;34m(t, P0, P1, P2, P3, P4, P5)\u001b[0m\n\u001b[0;32m      5\u001b[0m     \u001b[0mC\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mP3\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mP2\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mP2\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      6\u001b[0m     \u001b[0mD\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mP4\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mP3\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mP3\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m     \u001b[0mE\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mP5\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mP6\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mP6\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      8\u001b[0m     \u001b[0mF\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mB\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      9\u001b[0m     \u001b[0mG\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mC\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mB\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mB\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'P6' is not defined"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1440x1440 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (20,20))\n",
    "\n",
    "P0 = np.array([2,0])\n",
    "P1 = np.array([6,0])\n",
    "P2 = np.array([6,3])\n",
    "P3 = np.array([0,3])\n",
    "P4 = np.array([0,6])\n",
    "P5 = np.array([4,6])\n",
    "arrP1 = route2(P0,P1,P2,P3,P4,P5)\n",
    "plt.plot(arrP1[:,0],arrP1[:,1],'y-')\n",
    "\n",
    "P6 = np.array([5,-1.5])\n",
    "P7 = np.array([14,8])\n",
    "P8 = np.array([4,-5])\n",
    "P9 = np.array([-4,4])\n",
    "P10= np.array([2,9])\n",
    "P11= np.array([5,4])\n",
    "arrP2 = route2(P6,P7,P8,P9,P10,P11)\n",
    "plt.plot(arrP2[:,0],arrP2[:,1],'y-')\n",
    "\n",
    "A0 = np.array([2,0])\n",
    "A1 = np.array([-1,3])\n",
    "A2 = np.array([2,6])\n",
    "\n",
    "B0 = np.array([2,6])\n",
    "B1 = np.array([5,9])\n",
    "B2 = np.array([8,6])\n",
    "\n",
    "C0 = np.array([8,6])\n",
    "C1 = np.array([11,3])\n",
    "C2 = np.array([8,0])\n",
    "\n",
    "D0 = np.array([2,0])\n",
    "D1 = np.array([5,-3])\n",
    "D2 = np.array([8,0])\n",
    "\n",
    "arrA = route0(A0,A1,A2,)\n",
    "arrB = route0(B0,B1,B2,)\n",
    "arrC = route0(C0,C1,C2,)\n",
    "arrD = route0(D0,D1,D2,)\n",
    "\n",
    "plt.plot(arrA[:,0],arrA[:,1],'y')\n",
    "plt.plot(arrB[:,0],arrB[:,1],'y-')\n",
    "plt.plot(arrC[:,0],arrC[:,1],'y-')\n",
    "plt.plot(arrD[:,0],arrD[:,1],'y-')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "78ba1d91",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "d7747106",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.46679688, 2.296875  ])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t = 0.125\n",
    "P0 = np.array([0,0])\n",
    "P1 = np.array([1,7])\n",
    "P2 = np.array([4,7])\n",
    "P3 = np.array([8,0])\n",
    "\n",
    "bezier(t,P0,P1,P2,P3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "b7e6be96",
   "metadata": {},
   "outputs": [],
   "source": [
    "def route(P0,P1,P2,P3):\n",
    "    n = 101\n",
    "    arrP = np.zeros((n,2))\n",
    "    tList = np.linspace(0,1,n)\n",
    "    index = 0\n",
    "    for t in tList:\n",
    "        arrP[index,:] = bezier(t,P0,P1,P2,P3)\n",
    "        index += 1\n",
    "    return arrP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "3f5deb94",
   "metadata": {},
   "outputs": [],
   "source": [
    "arrP = route(P0,P1,P2,P3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "4e7161a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2bbaed9fe50>]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(arrP[:,0],arrP[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8a6ad841",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x23345bdd1c0>]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "P0 = np.array([0,0])\n",
    "P1 = np.array([4,0])\n",
    "P2 = np.array([4,4])\n",
    "P3 = np.array([0,4])\n",
    "P4 = np.array([0,0])\n",
    "P5 = np.array([8,0])\n",
    "P6 = np.array([8,4])\n",
    "P7 = np.array([0,4])\n",
    "arrA = route(P0,P1,P2,P3)\n",
    "arrB = route(P4,P5,P6,P7)\n",
    "plt.plot(arrA[:,0],arrA[:,1])\n",
    "plt.plot(arrB[:,0],arrB[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "76d739c6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x23345e6bbb0>]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "P0 = np.array([0,0])\n",
    "P1 = np.array([0,4])\n",
    "P2 = np.array([2,4])\n",
    "P3 = np.array([2,0])\n",
    "P4 = np.array([0,0])\n",
    "P5 = np.array([0,-4])\n",
    "P6 = np.array([2,-4])\n",
    "P7 = np.array([2,0])\n",
    "arrA = route(P0,P1,P2,P3)\n",
    "arrB = route(P4,P5,P6,P7)\n",
    "plt.plot(arrA[:,0],arrA[:,1])\n",
    "plt.plot(arrB[:,0],arrB[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aade25a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "P0 = np.array([0,0])\n",
    "P1 = np.array([0,4])\n",
    "P2 = np.array([3,4])\n",
    "P3 = np.array([3,0])\n",
    "P4 = np.array([0,0])\n",
    "P5 = np.array([0,-4])\n",
    "P6 = np.array([3,-4])\n",
    "P7 = np.array([3,0])\n",
    "arrA = route(P0,P1,P2,P3)\n",
    "arrB = route(P4,P5,P6,P7)\n",
    "plt.plot(arrA[:,0],arrA[:,1])\n",
    "plt.plot(arrB[:,0],arrB[:,1])\n",
    "P8 = np.array([0,0])\n",
    "P9 = np.array([0,4])\n",
    "P10 = np.array([2,4])\n",
    "P11 = np.array([2,0])\n",
    "P12 = np.array([0,0])\n",
    "P13 = np.array([0,-4])\n",
    "P14 = np.array([2,-4])\n",
    "P15 = np.array([2,0])\n",
    "arrC = route(P0,P1,P2,P3)\n",
    "arrD = route(P4,P5,P6,P7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e7e5ed02",
   "metadata": {},
   "outputs": [],
   "source": [
    "P0 = np.array([0,0])\n",
    "P1 = np.array([0,4])\n",
    "P2 = np.array([2,4])\n",
    "P3 = np.array([2,0])\n",
    "P4 = np.array([0,0])\n",
    "P5 = np.array([0,-4])\n",
    "P6 = np.array([2,-4])\n",
    "P7 = np.array([2,0])\n",
    "arrA = route(P0,P1,P2,P3)\n",
    "arrB = route(P4,P5,P6,P7)\n",
    "plt.plot(arrA[:,0],arrA[:,1])\n",
    "plt.plot(arrB[:,0],arrB[:,1])\n",
    "P8 = np.array([0,0])\n",
    "P9 = np.array([0,4])\n",
    "P10 = np.array([2,4])\n",
    "P11 = np.array([2,0])\n",
    "P12 = np.array([0,0])\n",
    "P13 = np.array([0,-4])\n",
    "P14 = np.array([2,-4])\n",
    "P15 = np.array([2,0])\n",
    "arrC = route(P0,P1,P2,P3)\n",
    "arrD = route(P4,P5,P6,P7)\n",
    "plt.plot(arrC[:,0],arrC[:,1])\n",
    "plt.plot(arrD[:,0],arrD[:,1])\n",
    "P16 = np.array([0,0])\n",
    "P17 = np.array([0,4])\n",
    "P18 = np.array([2,4])\n",
    "P19 = np.array([2,0])\n",
    "P20 = np.array([0,0])\n",
    "P21 = np.array([0,-4])\n",
    "P22 = np.array([2,-4])\n",
    "P23 = np.array([2,0])\n",
    "arrE = route(P0,P1,P2,P3)\n",
    "arrF = route(P4,P5,P6,P7)\n",
    "plt.plot(arrE[:,0],arrE[:,1])\n",
    "plt.plot(arrF[:,0],arrF[:,1])\n",
    "P24 = np.array([0,0])\n",
    "P25 = np.array([0,4])\n",
    "P26 = np.array([2,4])\n",
    "P27 = np.array([2,0])\n",
    "P28 = np.array([0,0])\n",
    "P29 = np.array([0,-4])\n",
    "P30 = np.array([2,-4])\n",
    "P31 = np.array([2,0])\n",
    "arrG = route(P0,P1,P2,P3)\n",
    "arrH = route(P4,P5,P6,P7)\n",
    "plt.plot(arrG[:,0],arrG[:,1])\n",
    "plt.plot(arrH[:,0],arrH[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "6752ae63",
   "metadata": {},
   "outputs": [],
   "source": [
    "P = [\n",
    "    [0,0,1,1,2,1,3,0],\n",
    "    [0,0,1,-1,2,-1,3,0],\n",
    "    [4,0,5,1,6,1,7,0],\n",
    "    [4,0,5,-1,6,-1,7,0]\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "0f143c47",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 0]\n",
      " [1 1]\n",
      " [2 1]\n",
      " [3 0]]\n",
      "[[ 0  0]\n",
      " [ 1 -1]\n",
      " [ 2 -1]\n",
      " [ 3  0]]\n",
      "[[4 0]\n",
      " [5 1]\n",
      " [6 1]\n",
      " [7 0]]\n",
      "[[ 4  0]\n",
      " [ 5 -1]\n",
      " [ 6 -1]\n",
      " [ 7  0]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for p in P:\n",
    "    p = np.array(p)\n",
    "    a = p.shape[0]\n",
    "    n = a / 2\n",
    "    n = int(n)\n",
    "    p = p.reshape((n,2)) \n",
    "    print(p)\n",
    "    arrP = route(p[0],p[1],p[2],p[3])\n",
    "    plt.plot(arrP[:,0],arrP[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "91401386",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.0"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9d547cb4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
